CO2 Emmisions Effects
cp
NLPEC
GAMS
short
$title Multi-Region Growth Model Based on Global 2100 (MR5MCP,SEQ=134)
* This multi-region growth model used data from the Global 2100
* model used to anlayze the economic cost of carbon dioxide emissions.
*
* Reference: Manne A and R Richels, Buying Greenhouse Insurance -
* the Economic Cost of Dioxide Emission Limits, MIT Press
* Cambridge, 1992.
SET TP /T0*T11/;
SET ITER Iterations /IT1*IT10/;
SCALAR DEV Current deviation (%),
CONTOL Convergence tolerance (%) /0.001/;
SCALAR NY NUMBER OF YEARS PER PERIOD
NYB2 NY OVER 2;
NY = 110 / (CARD(TP)-1);
NYB2 = NY/2;
SETS RG Regions /USA, OOECD, USSR, CHINA, ROW/,
TLAST(TP) Last projection year,
TBASE(TP) Base year,
TFIRST(TP) First projection year,
TNEXT(TP,TP) Subsequent period indicator,
PP(TP) Projection period;
ALIAS (T,TP), (R,RG);
PARAMETER NPER(TP); NPER(T) = ORD(T);
TNEXT(T,T+1) = YES;
TBASE(T) = YES$(ORD(T) EQ 1);
TFIRST(T) = YES$(ORD(T) EQ 2);
TLAST(T) = YES$(ORD(T) EQ CARD(T));
PP(T) = YES$(NOT TBASE(T));
* Read the global 2100 data:
TABLE MACRO(*, RG) MACROECONOMIC AND OTHER PARAMETERS
USA OOECD USSR CHINA ROW
GDP 5.6 10.2 2.68 1.1 3.34
KGDP 2.4 2.8 3.0 3.0 3.0
DEPR 5.00 5.00 5.00 5.00 5.00
KPVS 0.24 0.28 0.30 0.30 0.30
$ONTEXT
GDP INITIAL GDP ($ TRILLIONS)
KGDP INITIAL CAPITAL-GDP RATIO
DEPR ANNUAL PERCENT DEPRECIATION
KPVS CAPITAL VALUE SHARE PARAMETER
$OFFTEXT
SET DECADE /1990,2000,2010,2020,2030,2040,2050,2060,2070,2080,2090,2100/;
PARAMETER WEIGHT(DECADE,TP);
TABLE GROW(*, *) POTENTIAL GDP GROWTH RATES - ANNUAL PERCENT
USA OOECD USSR CHINA ROW
1990 2.50 2.70 2.50 4.50 3.75
2000 2.00 2.00 2.00 4.00 3.30
2010 2.00 2.00 2.00 4.00 3.30
2020 1.75 1.75 1.75 3.75 3.05
2030 1.50 1.50 1.50 3.50 2.80
2040 1.50 1.50 1.50 3.50 2.80
2050 1.25 1.25 1.25 3.25 2.55
2060 1.25 1.25 1.25 3.25 2.55
2070 1.125 1.125 1.125 3.125 2.425
2080 1.00 1.00 1.00 3.00 2.30
2090 1.00 1.00 1.00 3.00 2.30
2100 1.00 1.00 1.00 3.00 2.30;
* CONVERT GROWTH RATES FROM DATES TO TIME PERIODS:
GROW(TP,"YEAR") = 1990 + 110 * (ORD(TP)-1)/(CARD(TP)-1);
WEIGHT(DECADE,TP) = ABS(GROW(TP,"YEAR") -
(1990 + 10 * (ORD(DECADE)-1)));
WEIGHT(DECADE,TP) = ((10 - WEIGHT(DECADE,TP))/10
)$(WEIGHT(DECADE,TP) LE 10);
GROW(TP,RG) = SUM(DECADE, WEIGHT(DECADE,TP)*GROW(DECADE,RG));
GROW(DECADE,RG) = 0;
DISPLAY GROW;
PARAMETER
UDR(RG,TP) Utility discount rate
KPVS(RG) Capital value share
KGDP(RG) Capital-GDP ratio
DEPR(RG) Depreciation rate
K0(RG) Initial capital
RK0(RG) Benchmark capital rental price
L0(RG) Initial labor
Y0(RG) Initial GDP
I0(RG) Initial investment
C0(RG) Initial consumption,
WB(RG) Baseline welfare index,
KSRV(RG) N-year capital survival factor
UDF(RG,T) Utility discount factor - period T
L(RG,T) Labor supply quantity,
QREF(T,RG) Reference (balanced growth) quantity path
PREF(T,RG) Reference (steady state) price path
PKBAR(RG) Steady-state rate of return;
DEPR(RG) = MACRO("DEPR",RG)/100;
KPVS(RG) = MACRO("KPVS",RG);
Y0(RG) = MACRO("GDP",RG);
KGDP(RG) = MACRO("KGDP",RG);
K0(RG) = KGDP(RG) * Y0(RG);
* Convert growth rates from percentages to fractions:
GROW(T,RG) = GROW(T,RG) / 100;
KSRV(RG) = 1/(1+DEPR(RG))**NY;
L0(RG) = Y0(RG) - KPVS(RG) * Y0(RG);
QREF(TBASE,RG) = 1;
LOOP(T, QREF(T+1,RG) = QREF(T,RG) * (1 + GROW(T,RG))**NY;);
RK0(RG) = KPVS(RG) / KGDP(RG);
UDR(RG,T) = RK0(RG) - DEPR(RG) - GROW(T,RG);
PREF(TBASE,RG) = 1;
PREF(TFIRST,RG) = 1;
LOOP(T$(ORD(T) GT 1),
PREF(T+1,RG) = PREF(T,RG) /((1+UDR(RG,T))*(1+GROW(T,RG)))**NY );
DISPLAY PREF, QREF;
L(RG,PP) = L0(RG) * QREF(PP,RG);
LOOP(TBASE, I0(RG) = K0(RG)*(GROW(TBASE,RG)+DEPR(RG)); );
C0(RG) = Y0(RG) - I0(RG);
WB(RG) = C0(RG)*SUM(PP, PREF(PP,"USA")*QREF(PP,RG));
* COMPUTE THE UTILITY DISCOUNT FACTOR:
UDF(RG,TBASE) = 1;
LOOP(T, UDF(RG,T+1) = UDF(RG,T) /(1+UDR(RG,T))**NY; );
UDF(RG,TLAST) = UDF(RG,TLAST) / (1-1/(1+UDR(RG,TLAST))**NY);
UDF(RG,T) = UDF(RG,T) / SUM(PP, UDF(RG,PP));
DISPLAY UDR, UDF;
PARAMETER WAGE, RENT, INCOME;
WAGE(PP,RG) = PREF(PP,RG);
RENT(PP,RG) = RK0(RG) * PREF(PP,RG);
INCOME(RG) = SUM(PP, WAGE(PP,RG) * L(RG,PP)) +
SUM(TFIRST, RENT(TFIRST,RG) * (K0(RG)+NYB2*I0(RG))*KSRV(RG));
OPTION WORK=248000;
POSITIVE
VARIABLES Y(RG,T) NEW VINTAGE PRODUCTION
INV(RG,T) INVESTMENT
K(RG,T) CAPITAL STOCK
P(T) FUTURE PRICE
PTC(RG,T) TERMINAL CAPITAL PRICE
W(RG,T) WAGE RATE
PK(RG,T) CAPITAL RETURN
RK(RG,T) RENTAL PRICE ON CAPITAL
I(RG) INCOME;
EQUATIONS MKT_C(T) OUTPUT BALANCE,
CAPSTK(RG,T) CAPITAL STOCK,
MKT_K(RG,T) CAPITAL USE,
MKT_L(RG,T) LABOR SUPPLY,
TC(RG,T) TERMINAL INVESTMENT,
PRF_Y(RG,T) PRODUCER PROFIT,
PRF_I(RG,T) INVESTMENT PROFIT,
PRF_K(RG,T) CAPITAL STOCK PROFIT,
INCDEF(RG) INCOME DEFINITION;
MKT_C(T)$PP(T)..
SUM(RG, Y(RG,T)) =G=
SUM(RG, UDF(RG,T)*I(RG)/P(T) + INV(RG,T));
CAPSTK(RG,T)$PP(T)..
NYB2 * INV(RG,T) + NYB2 * KSRV(RG) * INV(RG,T-1) =G=
K(RG,T) - K(RG,T-1)*KSRV(RG);
MKT_K(RG,T)$PP(T)..
K(RG,T) =G= (Y(RG,T)/Y0(RG)) * K0(RG) *
(W(RG,T)/PREF(T,RG))**(1-KPVS(RG)) *
(RK(RG,T)/(RK0(RG)*PREF(T,RG)))**KPVS(RG)
/(RK(RG,T)/(RK0(RG)*PREF(T,RG)));
MKT_L(RG,T)$PP(T)..
L(RG,T) =G= (Y(RG,T)/Y0(RG)) * L0(RG) *
(W(RG,T)/PREF(T,RG))**(1-KPVS(RG)) *
(RK(RG,T)/(RK0(RG)*PREF(T,RG)))**KPVS(RG)
/(W(RG,T)/PREF(T,RG));
TC(RG,T)$TLAST(T)..
INV(RG,T) =G= K(RG,T) * (GROW(T,RG) + DEPR(RG));
PRF_Y(RG,T)$PP(T)..
(1-KPVS(RG)) * LOG(W(RG,T)/PREF(T,RG)) +
KPVS(RG) * LOG(RK(RG,T)/(RK0(RG)*PREF(T,RG)))
=G= LOG(P(T)/PREF(T,RG));
PRF_I(RG,T)$PP(T)..
P(T) =G= NYB2*PK(RG,T) + NYB2*KSRV(RG)*PK(RG,T+1)
+ PTC(RG,T)$TLAST(T);
PRF_K(RG,T)$PP(T)..
PK(RG,T) + (PTC(RG,T)*(GROW(T,RG)+DEPR(RG)))$TLAST(T)
=G= RK(RG,T) + KSRV(RG) * PK(RG,T+1);
INCDEF(RG)..
I(RG) =G=
SUM(PP, W(RG,PP) * L(RG,PP)) +
SUM(TFIRST, (NYB2*I0(RG) + K0(RG)) * KSRV(RG) * PK(RG,TFIRST));
MODEL MRG / MKT_C.P, CAPSTK.PK, MKT_K.RK, MKT_L.W, TC.PTC,
PRF_Y.Y, PRF_I.INV, PRF_K.K, INCDEF.I /;
* WORK ON THE FULL HORIZON MODEL:
TLAST(T) = YES$(ORD(T) EQ CARD(T));
PP(T) = YES$(NOT TBASE(T));
* INSTALL BOUNDS TO AVOID BAD FUNCTION CALLS:
P.LO(T) = 0.0001 * PREF(T,"USA");
RK.LO(RG,T) = 0.0001 * RK0(RG) * PREF(T,RG);
W.LO(RG,T) = 0.0001 * PREF(T,RG);
* INSTALL SOME SCALE FACTORS:
Y.SCALE(RG,PP) = Y0(RG) * QREF(PP,RG);
INV.SCALE(RG,PP) = I0(RG) * QREF(PP,RG);
K.SCALE(RG,PP) = K0(RG) * QREF(PP,RG);
P.SCALE(T) = PREF(T,"USA");
PTC.SCALE(RG,TLAST) = PREF(TLAST,RG);
W.SCALE(RG,T) = PREF(T,RG);
PK.SCALE(RG,T) = PREF(T,RG);
RK.SCALE(RG,T) = RK0(RG)*PREF(T,RG);
I.SCALE(RG) = INCOME(RG);
MRG.SCALEOPT = 1;
* INSTALL DEFAULT STARTING POINT:
Y.L(RG,PP) = QREF(PP,RG) * Y0(RG);
INV.L(RG,PP) = QREF(PP,RG) * I0(RG);
K.L(RG,PP) = QREF(PP,RG) * K0(RG);
P.L(PP) = PREF(PP,"USA");
PTC.L(RG,TLAST) = PREF(TLAST,RG);
W.L(RG,PP) = PREF(PP,RG);
PK.L(RG,PP) = PREF(PP,RG);
RK.L(RG,PP) = RK0(RG) * PREF(PP,RG);
I.L(RG) = INCOME(RG);
INV.FX(RG,TBASE) = I0(RG);
K.FX(RG,TBASE) = K0(RG);
* FIX ONE INCOME LEVEL TO NORMALIZE THE PRICE SYSTEM:
I.FX(RG)$(ORD(RG) EQ 1) = INCOME(RG);
MRG.optfile = 1;
SOLVE MRG USING MCP;
subsolver coinipopt
This multi-region growth model used data from the Global 2100
model used to anlayze the economic cost of carbon dioxide emissions.
Reference: Manne A and R Richels, Buying Greenhouse Insurance -
the Economic Cost of Dioxide Emission Limits, MIT Press
Cambridge, 1992.